/**
 * 
 */
package com.suyx.job.service.area.impl;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.Map;

import org.springframework.stereotype.Service;

import com.suyx.job.entity.RoleInfo;
import com.suyx.job.entity.TuInfo;
import com.suyx.job.enums.SectEnums;
import com.suyx.job.utils.ImagePHash;
import com.suyx.job.utils.ImageUtils;
import com.suyx.job.utils.ScreenCapture;
import com.suyx.job.utils.SysStaticData;

/**
 * @author syx
 *
 */
@Service
public class GoToDtjwAreaServiceImpl extends AbstractAreaService {

	public final static Map<String, String> options_x = new HashMap<>();
	public final static Map<String, String> options_y = new HashMap<>();
	static {
		options_x.put("0", "584 436");
		options_x.put("1", "293 340");
		options_x.put("2", "393 340");
		options_x.put("3", "493 340");
		options_x.put("4", "284 437");
		options_x.put("5", "390 437");
		options_x.put("6", "490 437");
		options_x.put("7", "288 535");
		options_x.put("8", "388 535");
		options_x.put("9", "488 535");

		options_y.put("0", "727 447");
		options_y.put("1", "420 343");
		options_y.put("2", "520 343");
		options_y.put("3", "620 343");
		options_y.put("4", "423 437");
		options_y.put("5", "523 437");
		options_y.put("6", "623 437");
		options_y.put("7", "421 535");
		options_y.put("8", "521 535");
		options_y.put("9", "621 535");
	}

	@Override
	public boolean execute(String device, String path, String area) {
		try {
			String[] infos = SysStaticData.ZZ1.get("大唐境外").split("&");
			userZZ1(device, infos);
			// 到达境外
			ImagePHash p = new ImagePHash();
			ScreenCapture.snapshot(device, path, "screen.png");
			ImageUtils.cutPNG(new FileInputStream(path + "screen.png"), new FileOutputStream(path + device + ".png"),
					15, 409, 49, 37);
			String image1 = p.getHash(new FileInputStream(new File(path + device + ".png")));
			String image2 = p.getHash(new FileInputStream(new File(SysStaticData.SC_PIC_PATH + "chuangkou.png")));
			int score9 = p.distance(image1, image2);
			if (score9 != 0) {
				ScreenCapture.mouseClick(device, "387 670");
			}
			ScreenCapture.mouseClick(device, "37 678");
			Thread.sleep(2 * 1000L);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return false;
	}

	@Override
	public boolean support(String area) {
		return SectEnums.DTJW.getCode().equals(area);
	}

	@Override
	public boolean goToPoint(RoleInfo roleInfo, String path, TuInfo tuInfo) {
		String device = roleInfo.getDevice();
		String area = tuInfo.getZuobiaoX()+" "+tuInfo.getZuobiaoY();
		try {
			Thread.sleep(2 * 1000L);
		
			ScreenCapture.mouseClick(device, "117 68");// 打开地图
			ScreenCapture.mouseClick(device, "301 225");// 选x坐标
			String x = area.split(" ")[0];
			String y = area.split(" ")[1];
			input_x(device, x);
			ScreenCapture.mouseClick(device, "588 535");
			ScreenCapture.mouseClick(device, "460 225"); // 选y坐标
			input_y(device, y);
			ScreenCapture.mouseClick(device, "721 535");
			ScreenCapture.mouseClick(device, "590 228"); // 前往
			ScreenCapture.mouseClick(device, "1256 200"); // 关闭地图
			
			startGoto(roleInfo,path,tuInfo);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return false;
	}

	private void input_x(String device, String x) {
		for (int i = 0; i < x.length(); i++) {
			char c = x.charAt(i);
			String x_zb = options_x.get(String.valueOf(c));
			ScreenCapture.mouseClick(device, x_zb);
		}
	}

	private void input_y(String device, String y) {
		for (int i = 0; i < y.length(); i++) {
			char c = y.charAt(i);
			String y_zb = options_y.get(String.valueOf(c));
			ScreenCapture.mouseClick(device, y_zb);
		}
	}

}
